.TH std::time_put_byname 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::time_put_byname \- std::time_put_byname

.SH Synopsis
   Defined in header <locale>
   template<

       class CharT,
       class OutputIt = std::ostreambuf_iterator<CharT>

   > class time_put_byname : public std::time_put<CharT, OutputIt>;

   std::time_put_byname is a std::time_put facet which encapsulates time and date
   formatting rules of the locale specified at its construction.

.SH Specializations

   The standard library is guaranteed to provide every specialization that satisfies
   the following type requirements:

     * CharT is one of char and wchar_t, and
     * OutputIt must meet the requirements of LegacyOutputIterator.

.SH Member types

   Member type Definition
   char_type   CharT
   iter_type   OutputIt

.SH Member functions

   constructor   constructs a new time_put_byname facet
                 \fI(public member function)\fP
   destructor    destroys a time_put_byname facet
                 \fI(protected member function)\fP



std::time_put_byname::time_put_byname

   explicit time_put_byname( const char* name, std::size_t refs = 0 );
   explicit time_put_byname( const std::string& name, std::size_t refs =  \fI(since C++11)\fP
   0 );

   Constructs a new std::time_put_byname facet for a locale with name.

   refs is used for resource management: if refs == 0, the implementation destroys the
   facet, when the last std::locale object holding it is destroyed. Otherwise, the
   object is not destroyed.

.SH Parameters

   name - the name of the locale
   refs - the number of references that link to the facet



std::time_put_byname::~time_put_byname

   protected:
   ~time_put_byname();

   Destroys the facet.

Inherited from std::time_put

.SH Member objects

   Member name Type
   id (static) std::locale::id

.SH Member functions

   put invokes do_put
       \fI(public member function of std::time_put<CharT,OutputIt>)\fP

.SH Protected member functions

   do_put    formats date/time and writes to output stream
   \fB[virtual]\fP \fI(virtual protected member function of std::time_put<CharT,OutputIt>)\fP


.SH Example

   Prints current time using the "C" locale with the time_put facet replaced by various
   std::time_put_byname facets. The result shown was obtained using the clang compiler.


// Run this code

 #include <codecvt>
 #include <ctime>
 #include <iomanip>
 #include <iostream>

 int main()
 {
     std::time_t t = std::time(nullptr);
     std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv(std::cout.rdbuf());
     std::wostream out(&conv);

     out.imbue(std::locale(out.getloc(),
                           new std::time_put_byname<wchar_t>("ja_JP.utf8")));
     out << std::put_time(std::localtime(&t), L"%A %c") << '\\n';

     out.imbue(std::locale(out.getloc(),
                           new std::time_put_byname<wchar_t>("ru_RU.utf8")));
     out << std::put_time(std::localtime(&t), L"%A %c") << '\\n';

     out.imbue(std::locale(out.getloc(),
                           new std::time_put_byname<wchar_t>("sv_SE.utf8")));
     out << std::put_time(std::localtime(&t), L"%A %c") << '\\n';
 }

.SH Possible output:

 木曜日 2023年10月05日 19時44分51秒
 Четверг Чт 05 окт 2023 19:44:51
 torsdag tor  5 okt 2023 19:44:51

.SH See also

   time_put formats contents of std::tm for output as character sequence
            \fI(class template)\fP
